﻿// <copyright file="ISimulation.cs" company="City of Portland, BES-ASM">
// </copyright>
// <summary>ISimulation interface</summary>

namespace BESASM.EMGAATS.BusinessClasses
{
  using System;

  /// <summary>
  /// Interface for Simulation class
  /// </summary>
  public interface ISimulation
  {
    /// <summary>
    /// Gets or sets the name of the simulation
    /// </summary>
    string SimulationName { get; set; }

    /// <summary>
    /// Gets or sets the simulation description
    /// </summary>
    string SimulationDescription { get; set; }

    /// <summary>
    /// Gets or sets the storm for the simulation
    /// </summary>
    Storm Storm { get; set; }

    /// <summary>
    /// Gets or sets the simulation start time
    /// </summary>
    DateTime SimulationStartDateTime { get; set; }

    /// <summary>
    /// Gets or sets the simulation end time
    /// </summary>
    DateTime SimulationEndDateTime { get; set; }

    /// <summary>
    /// Gets or sets the Reporting start date
    /// </summary>
    DateTime ReportStartDateTime { get; set; }

    /// <summary>
    /// Gets or sets the Reporting time step
    /// </summary>
    DateTime ReportTimeStep { get; set; }

    /// <summary>
    /// Gets or sets the wet weather hydrologic time step
    /// </summary>
    DateTime WetTimeStep { get; set; }

    /// <summary>
    /// Gets or sets the dry weather hydrologic time step
    /// </summary>
    DateTime DryTimeStep { get; set; }

    /// <summary>
    /// Gets or sets the hydraulic model time step
    /// </summary>
    DateTime RoutingStep { get; set; }

    /// <summary>
    /// Gets or sets the storm type
    /// </summary>
    StormType StormType { get; set; }

    /// <summary>
    /// Gets or sets the storm reference, applies to synthetic storm type
    /// </summary>
    string StormReference { get; set; }

    /// <summary>
    /// Gets or sets the storm time step, applies to virtual gage and raingage storm types
    /// </summary>
    DateTime StormTimeStep { get; set; }
  }
}
